(Comp.sys.handhelds) Item: 2605 by diamant@hpfcbig.SDE.HP.COM (John Diamant) Subj: Todo program Date: Tue Apr 02 1991 Description: To-Do Reminder List Programmer: David Cook - Cookware Modified: John Diamant (modifications version 1.0) This program is a generic list manager for the 48SX calculator. It works not only on todo lists, but any other type of list you care to manage in the calculator (limited by memory of the calculator). I'm not going to repeat most of the general announcements from the original posting as I'm including it at the bottom of this message. Please note in particular the shareware notice in David's original comments. Installation instructions are the same as the original (see David's note at the bottom if you don't know how to install an ASC format program). If you can't download via ASC and need a cleartext posting (translate code 3), let me know (email would be fine) and I'll post that as well. However, to avoid further delay, I'm posting this now in ASC format. If you use this new TODO version and like it, I'd like to hear from you (especially if you're using the new features I added to it). If anybody knows David Cook's email address, I'd like to get in touch with him to merge my changes into his master version. The next response to this note will be a question I have regarding memory efficiency and PICT. If I find out how to improve the memory efficiency, I'll probably post a modified version, so you'll have to decide whether you want to wait or download this version. However, the lists you build with this version should work just fine for a more memory efficient version and I may be able to provide a simple patch (by the way, the memory usage problem is not something I introduced with my changes but my increasing the width of the PICT made it more likely to occur). To run the program, simply press the RUN button in the variables menu in the TODO directory (I use the following entry in my CST menu to start up the program: { "LIST" << TODO RUN >> }) By the way, I have truncated the grocery list substantially from the originalposting due to it's taking too much space. If you want the full one, download the original posting. The changes from David's version 1.0 are as follows: Made the OFF key turn the calculator off while in TODO (instead of BLUE SHIFT [EXIT]) Made the [EDIT] menu key return the current text as the default value for the new text (which also makes it easy to cancel an edit simply by pressing ENTER without making any changes). Made the program font-size independent (with a table for the font sizes for the 3 builtin available fonts) and provided a binding (+ and - keys) for dynamically changing the size of the font while the program is running. I did this because the small font is good when you want lots of data, but is hard on the eyes since it's all uppercase, so I want different fonts at different times (depends on how wide the data is I'm viewing. Implemented horizontal scrolling (by character, 10 characters at a time, and beginning and end of line). I also increased the width of the virtual screen (adjustable with a local variable in the TODO directory). LIST mode (choose which list to make active) has been extended to support USE, NEW, and DEL menu buttons rather than requiring obscure keystrokes for these functions. Made LIST mode more robust (added beeps for incorrect keystrokes). Deleting a list asks for confirmation (default is no). Changed the keybinding for deleting an item from a list from DEL to BLUE SHIFT DEL to avoid risk of accidental deletion. The ATTN key is trapped via IFERR and appropriate cleanup is done (note that I do not rely on Bill Wickes special version of IFERR -- the builtin was sufficient for my purpose -- to make sure the program cleaned up if I accidentally used ATTN instead of EXIT) Disables clock display during program execution and restores initial state of clock (displayed or not) on exit (even with ATTN key). Made the function which create new lists do some error checking on legal names (using "V" mode for INPUT). Removed reordering of vars on exit to put RUN at beginning since I run the program from CST and I don't want to pay the run-time cost every time I exit to reorder the VARS menu. > I'll post either when I get all the changes finished or I expect it to be > awhile before I get the rest done (I'll probably post in a couple of days). Sorry it was more than a couple of days, but I think you'll be glad I waited as I did add some functionality almost each day I delayed posting. How To Use TODO (modified from David's original instructions) --------------- When the program begins to run, it will display six menu items assigned to the menu keys. These six items are: LIST - Catalog of all lists OR create a new list OR delete a list ADD - Adds a new item to the end of the list OR inserts a blank item EDIT - Edits the text of an existing item SORT - Sort any particular list MARK - Marks an item OR Unmarks an item OR Unmarks all marked items EXIT - Exits the program and returns you to the HOME directory The following lists the available KEYSTROKES from the main menu level: UP ARROW - Scroll the current list towards the top - one item ORANGE SHIFT UP ARROW - Move the current list toward the top - one page BLUE SHIFT UP ARROW - Move the current list to the top DOWN ARROW - Scroll the current list toward the bottom - one item ORANGE SHIFT DOWN ARROW - Move the current list toward the bottom - one page BLUE SHIFT DOWN ARROW - Move the current list to the bottom LEFT ARROW - scroll the current list towards the left - one char ORANGE SHIFT LEFT ARROW - scroll the current list towards the left - 10 charsBLUE SHIFT LEFT ARROW - scroll the current list to the left edge RIGHT ARROW - scroll the current list towards the right - one char ORANGE SHIFT RIGHT ARROW- scroll the current list towards the right - 10 chars BLUE SHIFT RIGHT ARROW - scroll the current list to the right edge BLUE SHIFT DEL - Deletes the current item ORANGE SHIFT DEL (purge)- Deletes ALL marked items LIST (menu key) - Get a catalog of all lists BLUE SHIFT LIST - Enter the name for a brand new list (also available in LIST environment as function key) ADD (menu key) - Add an item to the end of the current list BLUE SHIFT ADD - Insert a blank line ABOVE the current item EDIT (menu key) - Edit the text of the current line SORT - Sort the current list in alphabetical order MARK (menu key) - Mark OR Unmark the current item BLUE SHIFT MARK - Unmark ALL marked items ORANGE SHIFT MARK - Same as MARK without the Startrek sound EXIT - Stop the program and return to the HOME directory BLUE SHIFT ON (OFF) - Turn the calculate off (turning it on returns to TODO automatically with no delay) + - Increase font to next larger size - - Decrease font to next smaller size KEYSTROKES available from LIST screen (entered via LIST menu key): UP ARROW - Scroll the current list towards the top - one item DOWN ARROW - Scroll the current list toward the bottom - one item USE (menu key) - make top list on screen currently viewed list ENTER - same as USE NEW (menu key) - Create new list (same as BLUE SHIFT LIST above) DEL (menu key) - Delete top list on screen (will ask for confirmation) + - Increase font to next larger size - - Decrease font to next smaller size Note the setting of PW below to change the width of your virtual screen. The one I posted is set to 200 but you might prefer 262 (2 screens)if you have sufficient memory. New Internals (see the original posting for other internals): Here is a brief listing of what the other routines do: PW - page width. Number of pixels of width to make the PICT display. The screen is 131 wide, so use no less than 131, but larger than 131 is required to get any horizontal scrolling. EXIT - function used to clean up and exit (called from a few places) CHFONT - takes delta for font number as argument and sets up CHARH, CHARW, FONT, and H for selected font. Values of 1, -1, and 0 are useful (increase font size by one, decrease font size by one, and set up font attributes for initialization respectively) FNTATTR - list containing font attributes (width and height in pixels) for the 3 builtin fonts. Note that the list is stored as a string and converted on the fly to avoid it being seen by the TODO program as a user-specified list. CHARH - character height in pixels of currently selected font CHARW - character width in pixels of currently selected font H - number of items which can be displayed on one screen in current font FONT - number of currently selected font (used in ->GROB call) Only PW should be changed by a user of the program. The rest are only documented if you want to change the program. They are managed internally. John Diamant Software Engineering Systems Division Hewlett Packard Co. ARPA Internet: diamant@hpfclp.sde.hp.com Fort Collins, CO UUCP: {hpfcla,hplabs}!hpfclp!diamant This code does not come with any warranty express or implied. It's suitability for any purpose is not the responsibility of the authors. This response does not represent the official position of, or statement by, the Hewlett-Packard Company. The above data is provided for informational purposes only. Note that I'm just a 48SX user like you -- I just happen to work for HP. I do not work in the division that makes these calculators. ---------------------- original (unmodified) announcement from David -------- Program Id: TODO Description: To-Do Reminder List Programmer: David Cook - Cookware Welcome to Version 1.0 of TODO, a To-Do list reminder system. This program was written for a friend of mine who refusedto buy a HP48SX unless it had a TODO program, scheduler (with calendar) and Rolodex (he would rather have a HP48SX instead of a Wizard etc.., but needed that functionality). Since I already have a rolodex and calendar program for my 48SX I only needed to provide this function. Disclaimer: I have had my 48SX only about 3 months, so I am sure that this program can be written better, smaller and faster. I would have used SYSEVAL statements, but was unsure about compatibility with other revisions (can anyone out thereanswer this question?). Shareware Notice: Feel free to use this program and redistribute it. I ask that if you redistribute the program, please keep it named TODO, and please keep the title screen intact. If you make significant changes, please add you name to the title screen - but keep my name as well. If you find this program invaluable, a $5 donation would be appreciated. Send any money or comments to: David Cook, RR #1 Box 351, Whitestown Indiana 46075 - Thank you! Installing And Running TODO: The program can be found at the bottom of this post. It is in ->ASC formatand you will need ASC-> to unscramble it. ASC-> is openly available on this forum as well as the HP BBS. (The ASC routines were written by Bill Wickes.) I'm sure that if you don't have them, an open letter to the NET would producethem rather quickly! (1) Cut the code at the bottom of the document, AFTER the CUT HERE line. Remove the final CUT HERE line at the bottom. (2) Send this file to your HP48SX, via the Serial Cable, into the file ' TODO' (3) Hit the TODO button (eg., place the contents of TODO on the command line) (4) Execute ASC-> (which you already should have loaded, or load it now) (5) Store the result back to 'TODO' - it will become a directory Running... (6) Simply enter the TODO directory and hit the RUN button which will be the very first button you see. From here on out, simply follow (6) to run it. Features: * Unlimited number of lists - up to the memory of your machine * Unlimited size for the lists - up to the memory of your machine * Ability to scroll the lists by the line or page * Ability to jump to the beginning or end of any list * Ability to change lists via a catalog * Ability to create new lists or delete old lists * Ability to MARK and UNMARK items on the list * Ability to UNMARK ALL items on the list * Ability to delete any single item on the list * Ability to delete ALL MARKED items on the list * Ability to insert a new item anywhere in the list * Ability to sort any list of information GROCERY LIST I have created a large (though somewhat incomplete) grocery lists, as a default. It is large so it does take a bit of time to compile the GROB. Usethis list as an example list, and delete it if you need the memory or find it unusable. How To Use TODO --------------- When the program begins to run, it will display six menu items assigned to the menu keys. These six items are: LIST - Catalog of all lists OR create a new list OR delete a list ADD - Adds a new item to the end of the list OR inserts a blank item EDIT - Edits the text of an existing item SORT - Sort any particular list MARK - Marks an item OR Unmarks an item OR Unmarks all marked items EXIT - Exits the program and returns you to the HOME directory The following lists the available KEYSTROKES from the main menu level: UP ARROW - Scroll the current list towards the top - one item ORANGE SHIFT UP ARROW - Move the current list toward the top - one page BLUE SHIFT UP ARROW - Move the current list to the top DOWN ARROW - Scroll the current list toward the bottom - one item ORANGE SHIFT DOWN ARROW - Move the current list toward the bottom - one page BLUE SHIFT DOWN ARROW - Move the current list to the bottom DEL (keyboard key) - Deletes the current item ORANGE SHIFT DEL (purge)- Deletes ALL marked items LIST (menu key) - Get a catalog of all lists BLUE SHIFT LIST - Enter the name for a brand new list ADD (menu key) - Add an item to the end of the current list BLUE SHIFT ADD - Insert a blank line ABOVE the current item EDIT (menu key) - Edit the text of the current line SORT - Sort the current list in alphabetical order MARK (menu key) - Mark OR Unmark the current item BLUE SHIFT MARK - Unmark ALL marked items ORANGE SHIFT MARK - Same as MARK without the Startrek sound EXIT - Stop the program and return to the HOME directory BLUE SHIFT EXIT - Turn the calculate off (turning it on returns to TODO automatically with no delay) Here are some general comments about a couple of the commands... CURRENT ITEM The current item (eg., the item you are going to MARK, UNMARK, DELETE etc..) is the one at the TOP OF THE DISPLAY. To move an item into the current item area, simply scroll (UP/DOWN arrow) until it is the top item on the list. This goes for catalog lists (LIST) as well. LIST When in LIST, all current lists in the current directory will be displayed, in alphabetical order (eg., sorted). WHILE you are in this mode, UP and DOWN arrow work (but PAGE UP and PAGE DOWN and GO TO TOP and GO TO END do not work). The DEL keyboard key will DELETE a list completely from memory. MARK The MARK command allows you to place a marker next to items which you have completed (eg., check 'em off). Hit MARK the first time to place the marker, Hit MARK a second time (on the same item) to unmark. When you MARK or UNMARKa 'startrek' type beep will occur to signify the mark. If you do not wish to hear the sound, hit ORANGE SHIFT MARK instead. BLUE SHIFT MARK will UNMARK ALL currently marked entries WITHOUT deleting them from the list. DEL The normal 48SX DEL key serves to DELETE the current item, when hit under the normal menu (when hit while in LIST, it deletes entire lists). If you hit ORANGE SHIFT DEL, the program will delete ALL marked entries - useful for purging information you have already done. STARTING UP If you start the program, and the current list is not found by the program (eg., you deleted it from the operating system level), the LIST command will automatically be run by the program. If the LIST command does not see any lists in memory, the BLUE SHIFT LIST command will automatically be run, allowing you to create a new list. OTHER KEYBOARD KEYS If you hit an unknown key (eg., not known to the program), the program will issue a very low tone. Try again! Internals: This posting is already too long to give you full details of the program. Feel free to rip it apart and improve it - just post it back! One routine you will probably want to add to your 'favorites' list is the routine named R2D2. This, standalone, routine takes a single number from the stack and makes your HP48SX sound like a device on Star Trek. The best values, for the most convincing sound are the values 4 or 5. Simply type 5 R2D2 for a demo. The number indicates the length of time (eg., number of chirps) for the speaker to make). Another routine you will find useful is the SORT routine. To use SORT independently of the program, simply place a LIST of STRINGS on Level 1 and run SORT. This is NOT a bubble sort, but an insertion sort, and it only takes as long to sort the data as it does to read the data one time (plus the linear count to find the place to put the data). Other items you will find useful, if reverse engineering the routines... Thevariable 'DATA' contains the name of the current to-do list database. Thesystem creates TEMPORARY variables (only will be seen if you abort the program while it is running). 'W' contains a number which signifies which item is the current iten (1 - S). 'S' contains the total number of items in the list. If you abort during a catalog, you will see CATTEMP which contains a list of all you to-do lists. 'W', 'S' and 'CATTEMP' are all deleted and rebuilt by the program. Here is a brief listing of what the other routines do: RUN - Runs the TODO program SORT - Sorts a LIST of STRINGS in level 1 MON - High speed GROB editor, used to turn a Mark ON MOFF - High speed GROB editor, used to turn a Mark OFF INSTD - INSerts a blank item into the ToDo list above the current item EDITD - EDIts the current item of the current ToDo list NEWTD - Creates a NEW ToDo list CATTD - Handles the LIST command catalog of lists SEETD - Displays the current list (does NOT build it) MAKTD - Makes the GROB associated with the current list ADDTD - Adds a new item to the END of the current list MARTD - Handles Marking and Unmarking of the current item UNMTD - Unmarks ALL marked items in the list WIPTD - Deletes ALL marked items in the list DELTD - Deletes the current item in the list R2D2 - Takes a repeat value from level 1 and issues StarTrek sounds AGAIN... these routines should only be used for editing and changing the program. Use the RUN routine to execute the program (just hit RUN) and the program will automatically issues these routines for you in responce to the menu keys you hit (as described above). I provided the details above only for those who want to see how it runs! ENJOY!!!!! --- rfmail 0.3.9 * Origin: Bonafido Usenet <====> Fido Gateway. (3:771/170.0) SEEN-BY: 771/110 170 180 FSC-Control: PATH: 771/110